package com.ahorresas.modelo.daos;

import com.ahorresas.conexion.Conexion;
import com.ahorresas.modelo.beans.TipoDocumentoBean;
import com.ahorresas.modelo.sqls.TipoDocumentoSql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TipoDocumentoDao {
    
    Conexion conexion = new Conexion();
    Connection con;
    TipoDocumentoSql sql = new TipoDocumentoSql();
    
    public TipoDocumentoBean buscarTipoDocumento(String idTipoDocumento){
        con = conexion.getConexion();
        TipoDocumentoBean tipoDocumento = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.buscarTipoDocumento());
            ps.setString(1, idTipoDocumento);
            
            ResultSet resultado = ps.executeQuery();
            if(resultado.next()){
                tipoDocumento = new TipoDocumentoBean();
                tipoDocumento.setCodigo(resultado.getString("codigo"));
                tipoDocumento.setDescripcion(resultado.getString("descripcion"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        finally{
            conexion.cerrarConexion(con);
        }
        return tipoDocumento;
    }
    
    public List<TipoDocumentoBean> listarTipoDocumentos(){
        con = conexion.getConexion();
        List<TipoDocumentoBean> listaTipoDocumentos = new ArrayList<>();
        TipoDocumentoBean tipoDocumento = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.listarTiposDocumento());
            ResultSet resultado = ps.executeQuery();
            while(resultado.next()){
                tipoDocumento = new TipoDocumentoBean();
                tipoDocumento.setCodigo(resultado.getString("codigo"));
                tipoDocumento.setDescripcion(resultado.getString("descripcion"));
                
                listaTipoDocumentos.add(tipoDocumento);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally{
            conexion.cerrarConexion(con);
        }
        return listaTipoDocumentos;
    }
    
    public int crearTipoDocumento(TipoDocumentoBean tipoDocumento){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.crearTipoDocumento());
            ps.setString(1, tipoDocumento.getCodigo());
            ps.setString(2, tipoDocumento.getDescripcion());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        } 
        return resultado;
    }
    
    public int modificarTipoDocumento(TipoDocumentoBean tipoDocumento){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.modificarTipoDocumento());
            ps.setString(1, tipoDocumento.getDescripcion());
            ps.setString(2, tipoDocumento.getCodigo());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
    
    public int eliminarTipoDocumento(Integer idTipoDocumento){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.eliminarTipoDocumento());
            ps.setInt(1, idTipoDocumento);
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
}